<?php
error_reporting(E_ALL & ~E_WARNING);
// 定义背包类
class Backpack {
    private $maxCapacity;
    private $currentCapacity;
    private $items;

    // 构造函数，初始化背包最大容量
    public function __construct($maxCapacity) {
        $this->maxCapacity = $maxCapacity;
        $this->currentCapacity = 0;
        $this->items = [];
    }

    // 添加物品到背包
    public function addItem($itemName, $itemSize) {
        if ($this->currentCapacity + $itemSize > $this->maxCapacity) {
            return false; // 背包容量不足，添加失败
        }
        if (isset($this->items[$itemName])) {
            $this->items[$itemName] += $itemSize;
        } else {
            $this->items[$itemName] = $itemSize;
        }
        $this->currentCapacity += $itemSize;
        return true; // 添加成功
    }

    // 从背包中移除物品
    public function removeItem($itemName, $itemSize) {
        if (isset($this->items[$itemName])) {
            if ($this->items[$itemName] <= $itemSize) {
                $this->currentCapacity -= $this->items[$itemName];
                unset($this->items[$itemName]);
            } else {
                $this->items[$itemName] -= $itemSize;
                $this->currentCapacity -= $itemSize;
            }
            return true; // 移除成功
        }
        return false; // 物品不存在，移除失败
    }

    // 查看背包中的物品
    public function viewItems() {
        return $this->items;
    }

    // 获取背包的当前容量
    public function getCurrentCapacity() {
        return $this->currentCapacity;
    }

    // 获取背包的最大容量
    public function getMaxCapacity() {
        return $this->maxCapacity;
    }
}

// 创建背包实例，设置最大容量为 200
$backpack = new Backpack(200);

// 处理表单提交
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $itemName = $_POST["itemName"];
    $itemSize = (int)$_POST["itemSize"];

    if (isset($_POST["add"])) {
        if ($backpack->addItem($itemName, $itemSize)) {
            $message = "成功添加 $itemName 到背包。";
        } else {
            $message = "背包容量不足，无法添加 $itemName。";
        }
    } elseif (isset($_POST["remove"])) {
        if ($backpack->removeItem($itemName, $itemSize)) {
            $message = "成功从背包中移除 $itemName。";
        } else {
            $message = "背包中不存在 $itemName 或移除数量超出，无法移除。";
        }
    }
}
?>

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>背包系统</title>
</head>

<body>
    <h1>背包系统</h1>
    <!-- 显示操作结果消息 -->
    <?php if (isset($message)): ?>
        <p><?php echo $message; ?></p>
    <?php endif; ?>
    <!-- 表单用于添加和移除物品 -->
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
        <label for="itemName">物品名称:</label>
        <input type="text" id="itemName" name="itemName" required><br>
        <label for="itemSize">物品大小:</label>
        <input type="number" id="itemSize" name="itemSize" min="1" required><br>
        <input type="submit" name="add" value="添加物品">
        <input type="submit" name="remove" value="移除物品">
    </form>
    <!-- 查看背包按钮 -->
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
        <input type="submit" name="view" value="查看背包">
    </form>
    <!-- 显示背包内容 -->
    <?php if (isset($_POST["view"])): ?>
        <h2>背包中的物品</h2>
        <ul>
            <?php
            $items = $backpack->viewItems();
            if (!empty($items)) {
                foreach ($items as $itemName => $itemSize) {
                    echo "<li>$itemName (大小: $itemSize)</li>";
                }
            } else {
                echo "<li>背包为空。</li>";
            }
            ?>
        </ul>
        <p>当前容量: <?php echo $backpack->getCurrentCapacity(); ?></p>
        <p>最大容量: <?php echo $backpack->getMaxCapacity(); ?></p>
    <?php endif; ?>
</body>

</html>